--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_android_codec2.py v4.7.0-rc.2 (a20c7e1c) Text, 2.89 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3patch
Tff7b72import T7ee787meshchatxT7ee787.T7ee787android_codec2 Tff7b72as T7ee787android_codec2
Tff7b72def Td2a8fftest_ensure_codec2_skips_non_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3android_codec2Tff7b72.Td2a8ff_codec2_preload_done Tff7b72= Tff7b72False
Te6edf3android_codec2Tff7b72.Td2a8ff_codec2_preload_error Tff7b72= Tff7b72None
Tff7b72with Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3android_codec2Tb4b4b4, Ta5d6ff"Ta5d6ff_is_chaquopy_androidTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3android_codec2Tff7b72.Td2a8ffensure_codec2_native_libraryTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72True
Tff7b72assert Te6edf3android_codec2Tff7b72.Td2a8ffcodec2_preload_errorTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72None
Tff7b72def Td2a8fftest_ensure_codec2_loads_bundled_libraryTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3lib Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6fflibcodec2.soTa5d6ff"
Te6edf3libTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\x7fTa5d6ffELFTa5d6ff"Tb4b4b4)
Te6edf3android_codec2Tff7b72.Td2a8ff_codec2_preload_done Tff7b72= Tff7b72False
Te6edf3android_codec2Tff7b72.Td2a8ff_codec2_preload_error Tff7b72= Tff7b72None
Tff7b72with Tb4b4b4(
Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3android_codec2Tb4b4b4, Ta5d6ff"Ta5d6ff_is_chaquopy_androidTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4,
Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(
Te6edf3android_codec2Tff7b72.Td2a8ffctypesTb4b4b4, Ta5d6ff"Ta5d6ffCDLLTa5d6ff"Tb4b4b4, Te6edf3side_effectTff7b72=Tb4b4b4[Tf85149OSErrorTb4b4b4(Tb4b4b4)Tb4b4b4, Tff7b72NoneTb4b4b4]
Tb4b4b4) Tff7b72as Te6edf3cdllTb4b4b4,
Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(
Te6edf3android_codec2Tb4b4b4,
Ta5d6ff"Ta5d6ff_libcodec2_candidatesTa5d6ff"Tb4b4b4,
Te6edf3return_valueTff7b72=Tb4b4b4[Te6edf3libTb4b4b4]Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3android_codec2Tff7b72.Td2a8ffensure_codec2_native_libraryTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72True
Te6edf3cdllTff7b72.Td2a8ffassert_called_withTb4b4b4(Tffa657strTb4b4b4(Te6edf3libTb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_repack_script_bundles_libcodec2Tb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Tff7b72import T7ee787importlibT7ee787.T7ee787util
Tff7b72import T7ee787zipfile
Te6edf3repo_root Tff7b72= Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentsTb4b4b4[T79c0ff2Tb4b4b4]
Te6edf3script Tff7b72= Te6edf3repo_root Tff7b72/ Ta5d6ff"Ta5d6ffscriptsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffrepack-android-pycodec2-wheels.pyTa5d6ff"
Te6edf3spec Tff7b72= Te6edf3importlibTff7b72.Td2a8ffutilTff7b72.Td2a8ffspec_from_file_locationTb4b4b4(Ta5d6ff"Ta5d6ffrepack_pycodec2Ta5d6ff"Tb4b4b4, Te6edf3scriptTb4b4b4)
Te6edf3repack_mod Tff7b72= Te6edf3importlibTff7b72.Td2a8ffutilTff7b72.Td2a8ffmodule_from_specTb4b4b4(Te6edf3specTb4b4b4)
Te6edf3specTff7b72.Td2a8ffloaderTff7b72.Td2a8ffexec_moduleTb4b4b4(Te6edf3repack_modTb4b4b4)
Te6edf3repack_pycodec2_wheel Tff7b72= Te6edf3repack_modTff7b72.Td2a8ffrepack_pycodec2_wheel
Te6edf3lib_wheel Tff7b72= Tb4b4b4(
Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffchaquopy_libcodec2-1.2.0-0-py3-none-android_24_arm64_v8a.whlTa5d6ff"
Tb4b4b4)
Te6edf3py_wheel Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffpycodec2-4.1.1-0-cp311-cp311-android_24_arm64_v8a.whlTa5d6ff"
Tff7b72with Te6edf3zipfileTff7b72.Td2a8ffZipFileTb4b4b4(Te6edf3lib_wheelTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3zoutTb4b4b4:
Te6edf3zoutTff7b72.Td2a8ffwritestrTb4b4b4(Ta5d6ff"Ta5d6ffchaquopy/lib/libcodec2.soTa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Tffea00\x7fTa5d6ffELF-libTa5d6ff"Tb4b4b4)
Te6edf3record Tff7b72= Tb4b4b4(
Ta5d6ff"Ta5d6ffpycodec2/pycodec2.so,sha256=deadbeef,8Tffea00\nTa5d6ff"
Ta5d6ff"Ta5d6ffpycodec2.dist-info/METADATA,sha256=deadbeef,4Tffea00\nTa5d6ff"
Ta5d6ff"Ta5d6ffpycodec2.dist-info/RECORD,,Tffea00\nTa5d6ff"
Tb4b4b4)
Tff7b72with Te6edf3zipfileTff7b72.Td2a8ffZipFileTb4b4b4(Te6edf3py_wheelTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3zoutTb4b4b4:
Te6edf3zoutTff7b72.Td2a8ffwritestrTb4b4b4(Ta5d6ff"Ta5d6ffpycodec2/pycodec2.soTa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Tffea00\x7fTa5d6ffELF-modTa5d6ff"Tb4b4b4)
Te6edf3zoutTff7b72.Td2a8ffwritestrTb4b4b4(Ta5d6ff"Ta5d6ffpycodec2.dist-info/METADATATa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Ta5d6ffmetaTa5d6ff"Tb4b4b4)
Te6edf3zoutTff7b72.Td2a8ffwritestrTb4b4b4(Ta5d6ff"Ta5d6ffpycodec2.dist-info/RECORDTa5d6ff"Tb4b4b4, Te6edf3recordTb4b4b4)
Te6edf3lib_src Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6fflibcodec2.soTa5d6ff"
Te6edf3lib_srcTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\x7fTa5d6ffELF-libTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3repack_pycodec2_wheelTb4b4b4(Te6edf3py_wheelTb4b4b4, Te6edf3lib_srcTb4b4b4)
Tff7b72with Te6edf3zipfileTff7b72.Td2a8ffZipFileTb4b4b4(Te6edf3py_wheelTb4b4b4) Tff7b72as Te6edf3zinTb4b4b4:
Te6edf3names Tff7b72= Te6edf3zinTff7b72.Td2a8ffnamelistTb4b4b4(Tb4b4b4)
Te6edf3record_text Tff7b72= Te6edf3zinTff7b72.Td2a8ffreadTb4b4b4(Ta5d6ff"Ta5d6ffpycodec2.dist-info/RECORDTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ffpycodec2/libcodec2.soTa5d6ff" Tff7b72in Te6edf3names
Tff7b72assert Ta5d6ff"Ta5d6ff,,Tffea00\nTa5d6ff" Tff7b72not Tff7b72in Te6edf3record_text
Tff7b72for Te6edf3line Tff7b72in Te6edf3record_textTff7b72.Td2a8ffsplitlinesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3lineTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3size_field Tff7b72= Te6edf3lineTff7b72.Td2a8ffrsplitTb4b4b4(Ta5d6ff"Ta5d6ff,Ta5d6ff"Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]
Tff7b72assert Te6edf3size_field
Tffa657intTb4b4b4(Te6edf3size_fieldTb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────